// 在构造函数中使用new的注意事项

// 至此你知道使用new初始化对象时，必须特别小心。具体来说应当这样做:
//  - 如果在构造函数中使用new来初始化指针成员,则应在析构函数中使用的delete;
//  - New和delete必须相互兼容，new对应delete，new[]对应中括号对应与delete[];
//  - 如果有多个构造函数，则必须以相同方式使用，new要么都带中括号，要么都不带，因为只有一个析构函数，所有的构造函数都必须与它兼容。
//    然而可以在一个构造函数中使用new初始化指针，而在另一个构造函数中将指针初始化为空，这是因为delete可以用于空指针
//  - 应该定义一个复制构造函数，通过深度复制将一个对象初始化为另一个对象。
//  - 应当定义一个赋值运算符，通过深度赋值将一个对象复制给另一个对象。

// C++11 新增关键字 nullptr;
// 以前空指针可以使用0或者C语言宏NULL(在很多头文件中，NULL是一个被定义为零个符号常量),C程序员通常使用的是NULL.
// 传统上C++程序员更加愿意使用0,但是如同前面的使用一样C++11提供了这样的关键字nullptr这是一个更好的选择
